home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr49 / 115_01.zip / CONFIG2.C < prev    next >
Text File  |  1993-06-01  |  4KB  |  249 lines

  1. /* Screen editor:  configuration program utilities
  2.  *
  3.  * Source:  config2.c
  4.  * Version: Jan. 10, 1981.
  5.  */
  6.  
  7.  
  8. /* print CR, LF and string to console */
  9.  
  10. plc(s) char *s;
  11. {
  12.  
  13.     putchar(CR);
  14.     puts(s);
  15. }
  16.  
  17. /* print string to console */
  18.  
  19. pc(s) char *s;
  20. {
  21.     puts(s);
  22. }
  23.  
  24. /* print yes or no on the console */
  25.  
  26. putyesno(n) int n;
  27. {
  28.     if (n==YES) {
  29.         pc("yes");
  30.     }
  31.     else if (n==NO) {
  32.         pc("no");
  33.     }
  34.     else {
  35.         pc("syserr");
  36.     }
  37. }
  38.  
  39. /* put blank line to console */
  40.  
  41. blank()
  42. {
  43.     plc("");
  44. }
  45.  
  46. /* start a new line and indent it */
  47.  
  48. indent()
  49. {
  50.     plc("    ");
  51. }
  52.  
  53. /* get decimal value from user */
  54.  
  55. getval(default) int default;
  56. {
  57. int val;
  58. char buffer[81];    /* cp/m needs 81 chars */
  59.     while (1) {
  60.         plc("Enter decimal value or carriage return:  ");
  61.         gets(buffer);
  62.         if (buffer[0]==0) {
  63.             return(default);
  64.         }
  65.         else if (number(buffer,&val)==YES) {
  66.                 return(val);
  67.         }
  68.     }
  69. }
  70.  
  71. /* get a yes or no answer from the user */
  72.  
  73. yesno()
  74. {
  75. char buffer[81];
  76. char c;
  77.     while (1) {
  78.         pc("  ");
  79.         gets(buffer);
  80.         c=tolower(buffer[0]);
  81.         if (c=='y') {
  82.             return(YES);
  83.         }
  84.         else if (c=='n') {
  85.             return(NO);
  86.         }
  87.         else {
  88.             plc("answer yes or no.");
  89.         }
  90.     }
  91. }
  92.  
  93. /* get each byte of a control sequence */
  94.  
  95. getbytes(index) int *index;
  96. {
  97. char buffer[81];
  98. char c;
  99. int k;
  100. int j;
  101.     *index=bytec;
  102.     /* do until user says all is well */
  103.     while (1) {
  104.         plc("");
  105.         k=0;
  106.         bytec=*index;
  107.         /* do until no more bytes */
  108.         while (1) {
  109.             pc("Enter byte ");
  110.             putdec(++k,3);
  111.             pc(":  ");
  112.             gets(buffer);
  113.             if (buffer[0]==0) {
  114.                 bytes[bytec++]=0;
  115.                 break;
  116.             }
  117.             /* put bytes into bytes[] */
  118.             j=0;
  119.             while (bytec<BYTEMAX) {
  120.                 c=buffer[j++];
  121.                 bytes[bytec++]=c;
  122.                 if (c==0) {
  123.                     break;
  124.                 }
  125.             }
  126.             if (bytec>=BYTEMAX) {
  127.                 plc("byte buffer overflow.");
  128.                 return;
  129.             }
  130.         }
  131.         pc("Are all bytes correct ?");
  132.         if (yesno()==YES) {
  133.             return;
  134.         }
  135.     }
  136. }
  137.  
  138. /* file utilities */
  139.  
  140. /* write one byte to the current output file */
  141.  
  142. putfile(c) char c;
  143. {
  144.     return (putc(c,output));
  145. }
  146.  
  147. /* write CR, LF and string to current output file */
  148.  
  149. plf(s) char *s;
  150. {
  151.     putfile(CR);
  152.     pf(s);
  153. }
  154.  
  155. /* write string to current output file */
  156.  
  157. pf(s) char *s;
  158. {
  159.     while (*s!=0) {
  160.         putfile(*s++);
  161.     }
  162. }
  163.  
  164. /* write start of comment to output file */
  165.  
  166. comment()
  167. {
  168.     plf("/*");
  169. }
  170.  
  171. /* write end of comment to output file */
  172.  
  173. endcom()
  174. {
  175.     plf("*/");
  176. }
  177.  
  178. /* write blank line to output file */
  179.  
  180. blankf()
  181. {
  182.     plf("");
  183. }
  184.  
  185. /* write 1 tab on new line to output file */
  186.  
  187. tab1f()
  188. {
  189.     putfile(CR);
  190.     putfile(TAB);
  191. }
  192.  
  193. /* write 2 tabs on new line to output file */
  194.  
  195. tab2f()
  196. {
  197.     putfile(CR);
  198.     putfile(TAB);
  199.     putfile(TAB);
  200. }
  201.  
  202. /* write start of procedure body to output file */
  203.  
  204. beginf()
  205. {
  206.     plf("{");
  207. }
  208.  
  209. /* write end of procedure body to output file */
  210.  
  211. endf()
  212. {
  213.     plf("}");
  214. }
  215.  
  216. /* write #define statement to output file */
  217.  
  218. putdef(s,n) char *s; int n;
  219. {
  220. char buffer[10];
  221.     plf("#define ");
  222.     pf(s);
  223.     pf(" ");
  224.     itoc(n,buffer,10);
  225.     pf(buffer);
  226. }
  227.  
  228. /* generate code to do special screen functions.
  229.  * index points into bytes[].
  230.  */
  231.  
  232. putbytes(index) int index;
  233. {
  234.     while (bytes[index]!=0) {
  235.         if (index>BYTEMAX) {
  236.             plf("syserr: putbytes");
  237.             return;
  238.         }
  239.         tab1f();
  240.         pf("syscout(");
  241.         while (bytes[index]!=0) {
  242.             putfile(bytes[index++]);
  243.         }
  244.         index++;
  245.         pf(");");
  246.     }
  247. }
  248.  
  249.